Thanks to everyone who replied Here's the original question: > I am searching for a way to add x/y coordinates to my point data. > The catch is that my data is saved in projected units (State Plane 83) > I am familiar with the "AddXYCoordToFTab" script, but if I run it on my > data, I get my fields populated with the eastings and northings in the > state plane units (2,396,915.32/1,012,362.08) What I want is the true > lat/lon coordinates. Is there a script/extension that can do this? I know > that I can jump through a few hoops and re-project my data, run the script, > then convert it back to State Plane, but I was just looking for an easier > path. I received many good responses, the one that worked the best was an extension sent to me from Jack O'Connell called "Add Lat/Long Coordinates" It did exactly what i wanted. If you would like it, let me know. Other good responses: Thanks to Bill Huber for sending this: Do it with the Field Calculator. First, create a view (let's call it "View1") and set the projection to your State Plane projection. Then, return to the theme that shows your data, begin editing it, open its table, and activate (or create, if necessary) the [Longitude] field. Calculate it as [Shape].ReturnUnprojected(av.FindDoc("View1").GetProjection).GetX Use the similar "GetY" expression for the latitude. You can easily turn the entire procedure into a script using our "Memorized calculations" extension available at www.quantdec.com/catalog.htm , even if you don't know Avenue. Thanks to Alan Sior for sending this script: 'this script will add XY coordinates to point and polygon ArcView shapefiles, and point, polygon 'HELP: Add XY//Adds XY co-ordinates to the attribute table of a point or polygon ArcView shapefile theProject = av.GetProject theView = av.GetActiveDoc theThemes = theView.GetActiveThemes for each theTheme in theThemes 'new fields will be double precision by default unless the theme is a single precision coverage doublePres = TRUE 'only FThemes have FTabs that may be altered if(theTheme.Is(FTheme).NOT) then MsgBox.Info("This theme is not an ARC/INFO coverage or an ArcView shapefile.","Theme:"++theTheme.GetName) continue end 'check to see if FTheme is editable if((theTheme.GetFTab.CanEdit).NOT) then MsgBox.Info("This theme cannot be edited.","Theme:"++theTheme.GetName) continue end 'get the FTheme's FTab and check to see what type of ShapeClass it contains theFTab = theTheme.GetFTab theShapeClass = theFTab.GetShapeClass 'is it a coverage? if(Coverage.Exists(theTheme.GetSrcName.AsString)) then 'if so, find out if it's a point or polygon coverage, the only two we can work with theSubName = theTheme.GetSrcName.GetSubName if(((theSubName = "point") OR (theSubName = "polygon") OR (theSubName = "labelpoint") OR (theSubName = "node")).NOT) then ' if(((theSubName = "point") OR (theSubName = "polygon") OR (theSubName = "labelpoint")).NOT) then MsgBox.Info("This operation only works on points, polygons, labelpoints, and nodes.","Theme:"++theTheme.GetName) ' MsgBox.Info("This operation only works on points, polygons, and labelpoints.","Theme:"++theTheme.GetName) continue else 'now that we know we have a coverage, see if it is single or double precision if(Coverage.IsDouble(theTheme.GetSrcName.AsString).NOT) then doublePres = FALSE else doublePres = TRUE end end 'find out whether it's a polygon coverage, so we can warn the user about the results if(theSubName = "polygon") then if(MsgBox.YesNo("Note, this will add the XY coordinates of the polygon's centroid, not its labelpoint. Do you wish to continue?","Theme:"++theTheme.GetName,TRUE).NOT) then continue end end if(theSubName = "labelpoint") then if(MsgBox.YesNo("Note, this will add the XY coordinates of the polygon's labelpoint, not its centroid. Do you wish to continue?","Theme:"++theTheme.GetName,TRUE).NOT) then continue end end end 'capture the shape field for reference shapeField = theFTab.FindField("Shape") 'create two new fields to the specifications of the ARC/INFO "ADDXY" command if(doublePres = TRUE) then xfield = Field.Make("X-coord",#FIELD_FLOAT,18,5) yfield = Field.Make("Y-coord",#FIELD_FLOAT,18,5) else xfield = Field.Make("X-coord",#FIELD_FLOAT,12,3) yfield = Field.Make("Y-coord",#FIELD_FLOAT,12,3) end 'if the FTab is currently being edited, make a note so we don't close it later if(theFTab.IsEditable) then alreadyOpen = TRUE else alreadyOpen = FALSE end theFTab.SetEditable(TRUE) 'only add the new fields if they do not exist already if(theFTab.FindField("X-coord") = NIL) then theFTab.AddFields({xfield}) else xfield = theFTab.FindField("X-coord") end if(theFTab.FindField("Y-coord") = NIL) then theFTab.AddFields({yfield}) else yfield = theFTab.FindField("Y-coord") end for each record in theFTab theShape = theFTab.ReturnValue(shapefield,record) 'if shape is a point or node, grab its coordinates 'if shape is a polygon or multipoint (polygon's labelpoint), grab the coordinates of its centroid if(theFTab.GetShapeClass.GetClassName = "point") then x = theShape.GetX y = theShape.GetY else x = theShape.ReturnCenter.GetX y = theShape.ReturnCenter.GetY end theFTab.SetValue(xfield,record,x) theFTab.SetValue(yfield,record,y) end 'if the FTab was not being edited to begin with, close it if ((alreadyOpen = TRUE).NOT) then theFTab.SetEditable(FALSE) end 'open the table so folks can see the result if(theTheme.HasTable) then theTheme.EditTable end end And thanks to Dr. Arun K. Saraf for his advice: Sometime back I developed an AV extension called as Coordinates Tool Box (available on ESRI Script page), which does lot many coordinates related operations including what you have desired in your email. Please hava a look and acknowledge the same.